﻿#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include"widget.h"
/**
* @projectName   qml4
* @brief         以下介绍 c++ 调用 qml
*                1： 修改 qml 空间的属性，
*                2： c++发送信号， qml 接受。
*                3： qml 发送信号， c++ 接受
* @author        Waleon
* @date          2020-10-11
*/
int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    // 加载 qml 模块
    QQmlEngine engine;
    QQmlComponent component(&engine, QUrl(QStringLiteral("qrc:///main.qml")));
    QObject *object = component.create();
    // 设置 qml 属性， 宽度， 高度
    object->setProperty("width", 700);
    object->setProperty("height", 200);
    // 设置 qml 中的子控件  Rectangle : 对象名称 objectName: "rect" 便于findChild函数找到

    QObject *rect = object->findChild<QObject*>("rect");
    if(rect) {
        rect->setProperty("color", "black");
    }

    widget w;
    // qml 发送信号， c++ 槽函数接受
    QObject::connect(object,SIGNAL(sendinfo()),&w,SLOT(qmlrecive()));
    // c++ 发送信号
    emit w.sendToQml("heisai");
    // c++ 发送信号， qml 对应的信号函数接受，然后qml 定义自己的信号处理函数 处理
    QObject::connect(&w,SIGNAL(sendToQml(QString)),object,SIGNAL(receiveText(QString)));

    return app.exec();
}
